package com.ruoyi.performance.controller;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.performance.domain.PerfLevelTemplate;
import com.ruoyi.performance.dto.PerfLevelTemplateDto;
import com.ruoyi.performance.mapper.PerfLevelTemplateMapper;
import com.ruoyi.performance.service.PerfLevelScoreService;
import com.ruoyi.performance.service.PerfLevelTemplateService;
import com.ruoyi.performance.utils.MyUtils;

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author YL
 * @date 2020-07-22
 * @description 绩效等级模板明细控制层
 */
@Slf4j
@RestController
@RequestMapping("perflevel")
public class PerfLevelTemplateController extends MyUtils {
	
	@Resource
	private PerfLevelTemplateService perfLevelTemplateService;

	@Resource
	private PerfLevelScoreService perfLevelScoreService;
    
	@Autowired
	PerfLevelTemplateMapper perfLevelTemplateMapper;
	/**
     * 根据id查找绩效等级模板
     * @param id 绩效模板id
     * @return 绩效等级模板明细
     */
	@GetMapping("get")
	public R list(int id){
		Map<String, Object> m = new HashMap<>(16);
		m.put("rows", perfLevelTemplateService.selectPerfLevelTemplateById(id));
		return R.ok(m);
	}

	/**
	 * 根据公司代码查找绩效等级模板
	 */
	@GetMapping("getbycode")
	public R getbycode(String companyCode) {
		startPage();
		return result(perfLevelTemplateService.selectPerfLevelTemplateByCompanyCode(companyCode));
	}

	/**
	 * 查询绩效等级模板明细列表
	 */
	@GetMapping("list")
	public R list(PerfLevelTemplateDto perfLevelTemplateDto) {
		startPage();
        return result(perfLevelTemplateService.selectPerfLevelTemplateList(perfLevelTemplateDto));
	}
	
	
	/**
	 * 新增保存绩效等级模板明细
	 */
	@PostMapping("save")
	@Transactional(rollbackFor = Exception.class)
	public Map<String, Object> addSave(@RequestBody PerfLevelTemplate perfLevelTemplate) {
		Map<String, Object> r = new HashMap<String, Object>();
		Map<String, Long> idmap = new HashMap<String, Long>();
		String result = perfLevelTemplateService.insertPerfLevelTemplate(perfLevelTemplate);
		if ( result == "1") {
			Long id = perfLevelTemplateMapper.selectId(perfLevelTemplate);
			if (id == null || id == 0)
			{
				result = "未获取到"+ perfLevelTemplate.getLevelTemplateCode() +"模板id，模板添加分值失败，请联系管理员！";
				log.error(result);
			}
			idmap.put("id",id);
			r.put("code", 0);
			r.put("msg", "success");
			r.put("rows",idmap);
			return r;
		}
		if  (result.contains("管理员")) {
			r.put("code", 500);
			r.put("msg", result);
			return r;
		}
		else {
			r.put("code", 505);
			r.put("msg", result);
			return r;
		}

	}

	/**
	 * 修改保存绩效等级模板明细
	 */
	@PostMapping("update")
	public Map<String,String>  editSave(@RequestBody Map<String, List<PerfLevelTemplate>> datas) {
		
		return jacResultMsg(perfLevelTemplateService.updatePerfLevelTemplate(datas));
	}

	/**
	 * 删除绩效等级模板
	 */
	@PostMapping("remove")
	@Transactional(rollbackFor=Exception.class)
	public Map<String,String> remove(String ids) {
		return jacResultMsg(perfLevelTemplateService.deletePerfLevelTemplateById(ids));
	}
	
}
